package com.yanqu.road.utils;

import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;

public class MapHelper {

    /**
     * LinkedHashMap 分页
     * @param map
     * @param pageNumber
     * @param pageSize
     * @return
     * @param <K>
     * @param <V>
     */
    public static <K, V> Map<K, V> getLinkedMapPage(Map<K, V> map, int pageNumber, int pageSize) {
        int skip = (pageNumber - 1) * pageSize;
        Map<K, V> result = new LinkedHashMap<>();
        int currentIndex = 0;
        for (Map.Entry<K, V> entry : map.entrySet()) {
            if (currentIndex >= skip && currentIndex < skip + pageSize) {
                result.put(entry.getKey(), entry.getValue());
            }
            if (currentIndex >= skip + pageSize) {
                break;
            }
            currentIndex++;
        }
        return result;
    }

    /**
     * 获取Map中的最后一个条目。
     * 注意：此方法仅适用于保持插入顺序的Map实现，如LinkedHashMap。
     * 对于其他类型的Map，结果可能不可预测。
     *
     * @param <K> 键的类型
     * @param <V> 值的类型
     * @param map 要查询的Map实例
     * @return Map的最后一个条目，如果为空则返回null
     */
    public static <K, V> Map.Entry<K, V> getLastEntry(Map<K, V> map) {
        if (map == null || map.isEmpty()) {
            return null;
        }

        Iterator<Map.Entry<K, V>> iterator = map.entrySet().iterator();
        Map.Entry<K, V> lastEntry = null;

        while (iterator.hasNext()) {
            lastEntry = iterator.next();
        }

        return lastEntry;
    }

}
